home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / Dots & Pixels / sources / scrolling_noise.cp < prev    next >
Text File  |  1995-09-29  |  2KB  |  108 lines

  1. #include <stdlib.h>
  2.  
  3. #include <Windows.h>
  4. #include <QDOffscreen.h>
  5. #include <Memory.h>
  6. #include <Fonts.h>
  7. #include <Packages.h>
  8. #include <SegLoad.h>
  9. #include <ToolUtils.h>
  10. #include <TextEdit.h>
  11. #include <Files.h>
  12.  
  13. #include "C_randomizer.h"
  14.  
  15. #include "general.h"
  16. #include "port.h"
  17. #include "gworld.h"
  18. #include "scrolling_noise.h"
  19.  
  20. scrolling_noise::scrolling_noise( int breedte, int hoogte, int diepte,
  21.                                     short dh, short dv, port &original)
  22.     : gworld( breedte, hoogte, diepte, original)
  23. {
  24.     init( breedte, hoogte, diepte, dh, dv);
  25. }
  26.  
  27. scrolling_noise::scrolling_noise( int breedte, int hoogte, int diepte,
  28.                             short dh, short dv, CTabHandle cTable)
  29.     : gworld( breedte, hoogte, diepte, cTable)
  30. {
  31.     init( breedte, hoogte, diepte, dh, dv);
  32. }
  33.  
  34. void scrolling_noise::init( int breedte, int hoogte, int diepte, short dh, short dv)
  35. {
  36.     d_h = dh;
  37.     d_v = dv;
  38.     //
  39.     // We could improve on this; if both dh and dv are nonzero there is
  40.     // some overlap between destHorRect and destVertRect. It probably is
  41.     // not worthwile to optimize for this, however.
  42.     //
  43.     if( d_h > 0)
  44.     {
  45.         newHor = new gworld( d_h, hoogte, diepte);
  46.         
  47.         SetRect( &origHorRect, 0, 0, d_h, hoogte);        
  48.         SetRect( &destHorRect, 0, 0, d_h, hoogte);
  49.  
  50.     } else if( d_h < 0) {
  51.  
  52.         newHor = new gworld( -d_h, hoogte, diepte);
  53.         
  54.         SetRect( &origHorRect, 0, 0, -d_h, hoogte);
  55.         SetRect( &destHorRect, breedte + d_h, 0, breedte, hoogte);
  56.  
  57.     } else {
  58.         newHor = 0;
  59.     }
  60.  
  61.     if( d_v > 0)
  62.     {
  63.         newVert = new gworld( breedte, d_v, diepte);
  64.  
  65.         SetRect( &origVertRect, 0, 0, breedte, d_v);
  66.  
  67.         SetRect( &destVertRect, 0, 0, breedte, d_v);
  68.     } else if( d_v < 0) {
  69.  
  70.         newVert = new gworld( breedte, -d_v, diepte);
  71.  
  72.         SetRect( &origVertRect, 0, 0, breedte, -d_v);
  73.         SetRect( &destVertRect, 0, hoogte + d_v, breedte, hoogte);
  74.  
  75.     } else {
  76.         newVert = 0;
  77.     }
  78.     fill_random();
  79. }
  80.  
  81. scrolling_noise::~scrolling_noise()
  82. {
  83.     if( newHor != 0)
  84.     {
  85.         delete newHor;
  86.     }
  87.     if( newVert != 0)
  88.     {
  89.         delete newVert;
  90.     }
  91. }
  92.  
  93. void scrolling_noise::step() const
  94. {
  95.     scroll( d_h, d_v);
  96.  
  97.     if( newHor != 0)
  98.     {
  99.         newHor->fill_random();
  100.         copyfrom( *newHor, origHorRect, destHorRect);
  101.     }
  102.     if( newVert != 0)
  103.     {
  104.         newVert->fill_random();
  105.         copyfrom( *newVert, origVertRect, destVertRect);
  106.     }
  107. }
  108.